A perfect test examines a system in every possible condition the system will experience in the field. If the system passes such a test, it is guaranteed to work when deployed. However, in nearly all modern computer systems, a perfect system test is impossible. Instead, testing of modern computer systems generally relies on finding the stress points of the computer system and obtaining an estimate of how much stress the computer system can handle before it ceases to function as desired. A computer system can be determined to fail such a test if the processing time tends to spike at a certain level of input data. Although the system could be designed to only operate with input data that does not exceed that level in the field, the system should likely be revised so that it does not suddenly break under the strain of a critical mass of input data. This is particularly true given that a tendency to spike towards failure under a given level of input data is often indicative of instabilities that can crash the system even when it is operating with a moderate level of input data.
When analyzing the performance of a system in response to a given level of input data it is often important to describe the complexity of the overall algorithm represented by the computer system using Big O notation. An algorithm's complexity can be analyzed using Big O notation because it describes the worst-case scenario in terms of execution time required or memory space used for a given level of input data. A common analogy for understanding Big O is the amount of work placed on an event host for handling different tasks based on the number of people invited to the event. In this analogy, the amount of work the host does is the resource metric O(n) and the number of attendees is the amount of input data “n”. Giving a toast to the attendees has a nearly constant Big O of k, greeting each attendee as they walk into the event has a linear Big O of n, and introducing each attendee to every other guest as they walk into the event has an exponential Big O of n2. Determining the Big O of a system is useful for determining if the system should be revised to be less susceptible to stress, or if it needs to be protected from being overloaded when deployed in the field. However, determining the Big O complexity for any level of input data “n” requires finding the input data characteristic that causes the system to perform the worst. In other words, it requires finding the stress data for the true worst-case performance of the system. Determining what input data is most likely to stress the computing system is a problem in it of itself. As most modern computer system includes numerous function calls and variant branching logical flows it can be impossible to determine the worst-case input data with closed form analysis and time-constrained empirical analysis may not uncover the true worst-case stress data.